﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaDeEntidades;
using System.Data.SqlClient;
using System.Data;

namespace CapaDatos
{
    public class LibroDao
    {
        public static string connectionstring = "Initial Catalog=Biblioteca;Data Source=localhost;Integrated Security=SSPI;";

        public static bool RegistrarLibro(Libro libro)
        {
            SqlConnection conn = new SqlConnection(connectionstring);
            bool respu = false;
            try
            {
                string titulo = "";
                string autor = "";
                int cantEj = 0;
                long isbn = 0;

                if (libro.Autor != null)
                {
                    autor = libro.Autor;
                }
                if (libro.CantidadDisponible != null)
                {
                    cantEj = libro.CantidadDisponible;
                }
                if (libro.Titulo != null)
                {
                    titulo = libro.Titulo;
                }

                if (libro.Isbn != null)
                {
                    isbn = libro.Isbn;
                }

                SqlCommand cmd = new SqlCommand("sp_CrearLibro", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@titulo", titulo);
                cmd.Parameters.AddWithValue("@autor", autor);
                cmd.Parameters.AddWithValue("@isbn", isbn);
                cmd.Parameters.AddWithValue("@cantEj", cantEj);
                cmd.Parameters.AddWithValue("@alta_libro", respu);
                cmd.Parameters["@alta_libro"].Direction = ParameterDirection.Output;
                cmd.ExecuteNonQuery();
                respu = Convert.ToBoolean(cmd.Parameters["@alta_libro"].Value);

            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
            finally
            {
                if (conn != null)
                    conn.Close();
            }
            return respu;
        }

        public static bool DarBajaLibro(Libro libro)
        {
            SqlConnection conn = new SqlConnection(connectionstring);
            bool respu = false;
            try
            {
                int idLibro = 0;
                if (libro.Codigo != null)
                {
                    idLibro = libro.Codigo;
                }

                SqlCommand cmd = new SqlCommand("sp_EliminarLibro", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@idLibro", idLibro);
                cmd.Parameters.AddWithValue("@baja_libro", respu);
                cmd.Parameters["@baja_libro"].Direction = ParameterDirection.Output;
                cmd.ExecuteNonQuery();
                respu = Convert.ToBoolean(cmd.Parameters["@baja_libro"].Value);

            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
            finally
            {
                if (conn != null)
                    conn.Close();
            }
            return respu;


        }

        public static bool ModificarLibro(Libro libro)
        {
            SqlConnection conn = new SqlConnection(connectionstring);
            bool respu = false;
            try
            {
                int idLibro = 0;
                string titulo = "";
                string autor = "";
                int cantEj = 0;
                long isbn = 0;

                if (libro.Codigo != null)
                {
                    idLibro = libro.Codigo;
                }
                if (libro.Autor != null)
                {
                    autor = libro.Autor;
                }
                if (libro.CantidadDisponible != null)
                {
                    cantEj = libro.CantidadDisponible;
                }
                if (libro.Titulo != null)
                {
                    titulo = libro.Titulo;
                }

                if (libro.Isbn != null)
                {
                    isbn = libro.Isbn;
                }

                SqlCommand cmd = new SqlCommand("sp_ModificarLibro", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@idLibro", idLibro);
                cmd.Parameters.AddWithValue("@autor ", titulo);
                cmd.Parameters.AddWithValue("@isbn", isbn);
                cmd.Parameters.AddWithValue("@cantEj", cantEj);
                cmd.Parameters.AddWithValue("@update_libro", respu);

                cmd.Parameters["@update_libro"].Direction = ParameterDirection.Output;
                cmd.ExecuteNonQuery();
                respu = Convert.ToBoolean(cmd.Parameters["@update_libro"].Value);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
            finally
            {
                if (conn != null)
                    conn.Close();
            }
            return respu;
        }

        public static DataSet ConsultaCatalogoLibros()
        {

            SqlConnection conn = new SqlConnection(connectionstring);
            DataSet ds = new DataSet();

            try
            {
                SqlCommand cmd = new SqlCommand("sp_VerCatalogo", conn);
                cmd.CommandType = CommandType.StoredProcedure;

                //LLENO EL DATASET
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                adapter.Fill(ds);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
            finally
            {
                if (conn != null)
                    conn.Close();
            }
            return ds;
        }



        public static DataSet ObtenerPrestamosPorLibro(Libro libro)
        {
            SqlConnection conn = new SqlConnection(connectionstring);
            DataSet ds = new DataSet();

            try
            {
                int idLibro = 0;
                if (libro.Codigo != null)
                {
                    idLibro = libro.Codigo;
                }

                SqlCommand cmd = new SqlCommand("sp_VerCantPrestamosPorLibro", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@idLibro", idLibro);

                //LLENO EL DATASET
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                adapter.Fill(ds);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
            finally
            {
                if (conn != null)
                    conn.Close();
            }
            return ds;
        }












    }
}
